package day11;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/*
1.定义抽象类Animal，包含私有属性name和age，为其完成setter、getter，带参构造方法，以及
eclipse生成ToString方法
2.定义子类Bird继承Animal，完成带参构造方法，重写Tostring方法。
3.定义子类Dog继承Animal，添加属性leg，为其完成setter，getter，完成带参构造方法，重写
ToString方法
4.在Main类的main方法中，定义列表list，在列表中规定只能放Dog和Bird，完成下列操作：
1.输入整数n，表示向列表中加入的对象的个数，然后向list中加入n个Animal
2.在加入每一个对象之前，若输入整数1，表示加入Dog对象，输入其他整数，加入Bird对象，然后通过
键盘输入相关属性，创建对应对象，加入list中。
3.一次输出所有的list对象
4.键盘输入一个name，然后判断在列表中是否存在对象属性name与此相同，如果相同，输出其对象的
类名，并输出对象的信息，
如果不存在对象name与键盘输入相同，显示“no this one"
 */
public abstract class Animal {
    private String name;
    private int age;

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     *
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     *
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Animal{name = " + name + ", age = " + age + "}";
    }
}

class Bird extends Animal {
    public Bird() {
    }

    public Bird(String name, int age) {
        super(name, age);
    }

    @Override
    public String getName() {
        return super.getName();
    }

    @Override
    public String toString() {
        return "Bird[" +
                "name=" + getName() +
                ",age=" + getAge() +
                ']';
    }
}


class Dog extends Animal {
    private int leg;

    public int getLeg() {
        return leg;
    }

    public void setLeg(int leg) {
        this.leg = leg;
    }

    public Dog(int leg) {
        this.leg = leg;
    }

    public Dog(String name, int age, int leg) {
        super(name, age);
        this.leg = leg;
    }

    @Override
    public String toString() {
        return "Dog[" +
                "leg=" + leg +
                ",name=" + getName() +
                ",age=" + getAge() +
                ']';
    }
}

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        List<Animal> list = new ArrayList<>();
        int i = sc.nextInt();
        for (int n = 0; n < i; n++) {
            int m = sc.nextInt();
            if (m == 1) {
                list.add(new Dog(sc.next(), sc.nextInt(), sc.nextInt()));
            } else {
                list.add(new Bird(sc.next(), sc.nextInt()));
            }
        }
        System.out.println(list);
        String name = sc.next();
        boolean flag = false;
        for (Animal animal : list) {
            if (animal.getName().equals(name)) {
                flag = true;
                if (animal instanceof Dog) {
                    System.out.println("Dog");
                } else {
                    System.out.println("Bird");
                }
                System.out.println(animal);
            }
        }
        if (!flag) {
            System.out.println("no this one");
        }
    }
}
